package com.way.view;

import android.content.Context;
import android.view.View;

import java.util.ArrayList;
import java.util.HashMap;

/**
 * A manager which notifies the event of a new popup in order to dismiss the old
 * popup if exists.
 */
public class PopupManager {
	private static HashMap<Context, PopupManager> sMap = new HashMap<Context, PopupManager>();

	public interface OnOtherPopupShowedListener {
		public void onOtherPopupShowed();
	}

	private PopupManager() {
	}

	private ArrayList<OnOtherPopupShowedListener> mListeners = new ArrayList<OnOtherPopupShowedListener>();

	public void notifyShowPopup(View view) {
		for (OnOtherPopupShowedListener listener : mListeners) {
			if ((View) listener != view) {
				listener.onOtherPopupShowed();
			}
		}
	}

	public void setOnOtherPopupShowedListener(
			OnOtherPopupShowedListener listener) {
		mListeners.add(listener);
	}

	public static PopupManager getInstance(Context context) {
		PopupManager instance = sMap.get(context);
		if (instance == null) {
			instance = new PopupManager();
			sMap.put(context, instance);
		}
		return instance;
	}

	public static void removeInstance(Context context) {
		PopupManager instance = sMap.get(context);
		sMap.remove(context);
	}
}
